Modern computer networks incorporate layers of virtualization so that physically remote computers and computer components can be allocated to a particular task and then reallocated when the task is done. Users sometimes speak in terms of computing “clouds” because of the way groups of computers and computing components can form and split responsive to user demand, and because users often never see the computing hardware that ultimately provides the computing services. More recently, different types of computing clouds and cloud services have begun emerging.
For the purposes of this description, cloud services may be divided broadly into “low level” services and “high level” services. Low level cloud services (sometimes called “raw” or “commodity” services) typically provide little more than virtual versions of a newly purchased physical computer system: virtual disk storage space, virtual processing power, an operating system, and perhaps a database such as an RDBMS. In contrast, high or higher level cloud services typically focus on one or more well-defined end user applications, such as business oriented applications. Some high level cloud services provide an ability to customize and/or extend the functionality of one or more of the end user applications they provide; however, high level cloud services typically do not provide direct access to low level computing functions.
Some high level cloud based services may permit a user to not only customize existing applications, but also to create new applications, processes, or data flows that satisfy a specific need of that user. This may include a need to provide a version of an application for use in one or more markets. Since some of these markets may be in locations in which different languages are spoken, an international marketing plan may include the capability to provide applications in more than a single language. This means that user interfaces, help functions, operating instructions, and even comments contained in software code may need to be translated into one or more languages. Additionally, where such cloud based services provide for new applications, processes, or data flows to be deployed within the cloud based services' existing user interface (and hence are desired to become a seamless part of the user experience of that service platform), it is critical for ease of use and user adoption that the user interface elements for the new applications, processes, or data flows be consistent in look and feel, including the use of standard terminology both in the original language and in any translations to other languages.
Unfortunately, accomplishing this translation can be a difficult and inefficient process. Typically, a software vendor will develop an application and then translate all (or essentially all of the significant) instances of one language into a second language to produce a version of the application for a new market. However, this approach has several disadvantages, including but not limited to:                A significant amount of manual effort is typically required, and there are many possible sources of inefficiency in managing the translation process;        Achieving a high quality (and hence reliable) translation can be an expensive and time-consuming process, involving multiple review and approval steps to build knowledge into the solution and to identify domain expertise; and        Existing translation solutions (which may be automated, semi-automated, or manual) don't enable developers to fully leverage existing content translation data stores and related content to ensure consistency across the user experience for their own products, to reduce the requirement for additional translation services, or permit other users and developers to access previously generated translation tools and thereby speed up their own development processes.        
As noted, methods presently exist for generating software applications in more than a single language as part of providing an “internationalization” strategy for a company. However, conventional methods typically suffer from one or more disadvantages, including requiring a large amount of time to implement, increasing the cost of software development, and introducing other inefficiencies into the software development process. Further, conventional systems and methods may not ensure completeness and consistency of terminology in the translation into other languages. Embodiments of the invention are directed toward solving these and other problems individually and collectively.